package com.ywk.webFlux.redis;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
import org.springframework.data.redis.core.ReactiveValueOperations;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;

/**
 * 响应式编程-redis篇
 * 参考链接：https://www.jianshu.com/p/d297b049cbb3
 *
 * 非关系型数据库领域，redis和mongo可以支持支持reactive编程（即响应式编程），以读取redis为例。
 * redis客户端lettuce可以用于异步读取，响应式编程配合WebFlux就非常合适了，可以引入spring-boot-starter-data-redis快速完成lettuce与spring项目的整合
 *
 * @Author zbh
 * @Date 2023/4/28
 */
@RestController
@RequestMapping("/webFluxByRedisDemo")
public class WebFluxByRedisDemo {

    @Autowired
    private ReactiveStringRedisTemplate redisTemplate;

    @GetMapping("/name")
    public Mono<String> getName() {
        ReactiveValueOperations<String, String> opsForValue = redisTemplate.opsForValue();
        return opsForValue.get("name");
    }
}
